package com.atwulidun.interpreter19;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class InterpreterDemo {
    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        // 获取表达式
        String expString = getExpString();
        // 获取解析Map
        Map<String, Integer> var = getVar(expString);
        // 创建一个计算器
        Calculator calculator = new Calculator(expString);
        // 根据计算器计算结果
        System.out.println("表达式的计算结果为：" + calculator.calculate(var));
    }

    // 获取输入表达式的方法(a+b-c+d)
    public static String getExpString() {
        System.out.println("请输入表达式：");
        return scanner.next();
    }

    // 获取表达式中变量的值，并将它们保存到HashMap中的方法
    public static Map<String, Integer> getVar(String expString) {
        // 创建一个HashMap
        Map<String, Integer> var = new HashMap<>();
        // 将expString转换为字符数组
        char[] chars = expString.toCharArray();
        // 获取变量的值，注意：重复的变量不需要再次获取值
        for (char aChar : chars) {
            if (aChar != '+' && aChar != '-' && !var.containsKey(String.valueOf(aChar))) {
                System.out.println("请输入变量" + aChar + "的值：");
                int i = scanner.nextInt();
                // 将该变量以及其对应的值放进var中
                var.put(String.valueOf(aChar), i);
            }
        }
        return var;
    }
}
